
package main

import (
	"fmt"
	"reflect"
)

func main() {
	var a int8 = 1
	var b int16 = 2
	var c int32 = 3
	var d int64 = 4
	var e int = 5
	
	var f uint8 = 6
	var g uint16 = 7
	var h uint32 = 8
	var i uint64 = 9
	var j uint = 10

	var k *int = &e

	var l bool = true

	var m string = "wang"
	
	var n []byte = []byte(m)

	var o []byte = []byte("王国栋")

	var p [3]string = [3]string{"王", "国", "栋"}

	var q []string = []string{"王", "国", "栋"}

	var r []string = make([]string, 3)
	r[0] = "王"
	r[1] = "国"
	r[2] = "栋"

	var s map[string]string = make(map[string]string)
	s["name"] = "王国栋"
	s["age"] = "25"
	s["height"] = "177cm"

	var t = make(chan int, 3)

	fmt.Println(string(o))
	fmt.Println(p)
	
	fmt.Println(reflect.TypeOf(a))
	fmt.Println(reflect.TypeOf(b))
	fmt.Println(reflect.TypeOf(c))
	fmt.Println(reflect.TypeOf(d))
	fmt.Println(reflect.TypeOf(e))
	fmt.Println(reflect.TypeOf(f))
	fmt.Println(reflect.TypeOf(g))
	fmt.Println(reflect.TypeOf(h))
	fmt.Println(reflect.TypeOf(i))
	fmt.Println(reflect.TypeOf(j))
	fmt.Println(reflect.TypeOf(k))
	fmt.Println(reflect.TypeOf(l))
	fmt.Println(reflect.TypeOf(m))
	fmt.Println(reflect.TypeOf(n))
	fmt.Println(reflect.TypeOf(o))

	fmt.Println(reflect.ValueOf(a))
	fmt.Println(reflect.ValueOf(b))
	fmt.Println(reflect.ValueOf(c))
	fmt.Println(reflect.ValueOf(d))
	fmt.Println(reflect.ValueOf(e))
	fmt.Println(reflect.ValueOf(f))
	fmt.Println(reflect.ValueOf(g))
	fmt.Println(reflect.ValueOf(h))
	fmt.Println(reflect.ValueOf(i))
	fmt.Println(reflect.ValueOf(j))
	fmt.Println(reflect.ValueOf(k))
	fmt.Println(reflect.ValueOf(l))
	fmt.Println(reflect.ValueOf(m))
	fmt.Println(reflect.ValueOf(n))
	fmt.Println(reflect.TypeOf(o))
	fmt.Println(reflect.ValueOf(o))

	fmt.Println(reflect.TypeOf(p))
	fmt.Println(reflect.ValueOf(p))

	
	fmt.Println(reflect.TypeOf(q))
	fmt.Println(reflect.ValueOf(q))

	fmt.Println(reflect.TypeOf(r))
	fmt.Println(reflect.ValueOf(r))

	fmt.Println(reflect.TypeOf(s))
	fmt.Println(reflect.ValueOf(s))

	fmt.Println(reflect.TypeOf(t))
	fmt.Println(reflect.ValueOf(t))


	t<-5
	t<-6
	fmt.Println(reflect.TypeOf(t))
	fmt.Println(reflect.ValueOf(t))

	fmt.Println(reflect.TypeOf(<-t))
	fmt.Println(reflect.ValueOf(<-t))
}